package io.github.dsheirer.module.decode.p25.reference;

public enum VendorLinkControlOpcode
{
	RESERVED_00( "OPCODE_00", "RESERVED", 0 ),
	RESERVED_01( "OPCODE_01", "RESERVED", 1 ),
	RESERVED_02( "OPCODE_02", "RESERVED", 2 ),
	RESERVED_03( "OPCODE_03", "RESERVED", 3 ),
	RESERVED_04( "OPCODE_04", "RESERVED", 4 ),
	RESERVED_05( "OPCODE_05", "RESERVED", 5 ),
	RESERVED_06( "OPCODE_06", "RESERVED", 6 ),
	RESERVED_07( "OPCODE_07", "RESERVED", 7 ),
	RESERVED_08( "OPCODE_0B", "RESERVED", 8 ),
	RESERVED_09( "OPCODE_0B", "RESERVED", 9 ),
	RESERVED_0A( "OPCODE_0B", "RESERVED", 10 ),
	RESERVED_0B( "OPCODE_0B", "RESERVED", 11 ),
	RESERVED_0C( "OPCODE_0C", "RESERVED", 12 ),
	RESERVED_0D( "OPCODE_0D", "RESERVED", 13 ),
	RESERVED_0E( "OPCODE_0E", "RESERVED", 14 ),
	RESERVED_0F( "OPCODE_0F", "RESERVED", 15 ),
	RESERVED_10( "OPCODE_10", "RESERVED", 16 ),
	RESERVED_11( "OPCODE_11", "RESERVED", 17 ),
	RESERVED_12( "OPCODE_12", "RESERVED", 18 ),
	RESERVED_13( "OPCODE_13", "RESERVED", 19 ),
	RESERVED_14( "OPCODE_14", "RESERVED", 20 ),
	RESERVED_15( "OPCODE_15", "RESERVED", 21 ),
	RESERVED_16( "OPCODE_16", "RESERVED", 22 ),
	RESERVED_17( "OPCODE_17", "RESERVED", 23 ),
	RESERVED_18( "OPCODE_18", "RESERVED", 24 ),
	RESERVED_19( "OPCODE_19", "RESERVED", 25 ),
	RESERVED_1A( "OPCODE_1A", "RESERVED", 26 ),
	RESERVED_1B( "OPCODE_1B", "RESERVED", 27 ),
	RESERVED_1C( "OPCODE_1C", "RESERVED", 28 ),
	RESERVED_1D( "OPCODE_1D", "RESERVED", 29 ),
	RESERVED_1E( "OPCODE_1E", "RESERVED", 30 ),
	RESERVED_1F( "OPCODE_1F", "RESERVED", 31 ),
	RESERVED_20( "OPCODE_20", "RESERVED", 32 ),
	RESERVED_21( "OPCODE_21", "RESERVED", 33 ),
	RESERVED_22( "OPCODE_22", "RESERVED", 34 ),
	RESERVED_23( "OPCODE_23", "RESERVED", 35 ),
	RESERVED_24( "OPCODE_24", "RESERVED", 36 ),
	RESERVED_25( "OPCODE_25", "RESERVED", 37 ),
	RESERVED_26( "OPCODE_26", "RESERVED", 38 ),
	RESERVED_27( "OPCODE_27", "RESERVED", 39 ),
	RESERVED_28( "OPCODE_28", "RESERVED", 40 ),
	RESERVED_29( "OPCODE_29", "RESERVED", 41 ),
	RESERVED_2A( "OPCODE_2A", "RESERVED", 42 ),
	RESERVED_2B( "OPCODE_2B", "RESERVED", 43 ),
	RESERVED_2C( "OPCODE_2C", "RESERVED", 44 ),
	RESERVED_2D( "OPCODE_2D", "RESERVED", 45 ),
	RESERVED_2E( "OPCODE_2E", "RESERVED", 46 ),
	RESERVED_2F( "OPCODE_2F", "RESERVED", 47 ),
	RESERVED_30( "OPCODE_30", "RESERVED", 48 ),
	RESERVED_31( "OPCODE_31", "RESERVED", 49 ),
	RESERVED_32( "OPCODE_32", "RESERVED", 50 ),
	RESERVED_33( "OPCODE_33", "RESERVED", 51 ),
	RESERVED_34( "OPCODE_34", "RESERVED", 52 ),
	RESERVED_35( "OPCODE_35", "RESERVED", 53 ),
	RESERVED_36( "OPCODE_36", "RESERVED", 54 ),
	RESERVED_37( "OPCODE_37", "RESERVED", 55 ),
	RESERVED_38( "OPCODE_38", "RESERVED", 56 ),
	RESERVED_39( "OPCODE_39", "RESERVED", 57 ),
	RESERVED_3A( "OPCODE_3A", "RESERVED", 58 ),
	RESERVED_3B( "OPCODE_3B", "RESERVED", 59 ),
	RESERVED_3C( "OPCODE_3C", "RESERVED", 60 ),
	RESERVED_3D( "OPCODE_3D", "RESERVED", 61 ),
	RESERVED_3E( "OPCODE_3E", "RESERVED", 62 ),
	RESERVED_3F( "OPCODE_3F", "RESERVED", 63 ),
	UNKNOWN( "UNKNOWN OPCODE", "UNKNOWN", -1 );

	private String mLabel;
	private String mDescription;
	private int mCode;
	
	private VendorLinkControlOpcode( String label, String description, int code )
	{
		mLabel = label;
		mDescription = description;
		mCode = code;
	}
	
	public String getLabel()
	{
		return mLabel;
	}
	
	public String getDescription()
	{
		return mDescription;
	}
	
	public int getCode()
	{
		return mCode;
	}
	
	public static VendorLinkControlOpcode fromValue( int value )
	{
		if( 0 <= value && value <= 63 )
		{
			return values()[ value ];
		}
		
		return UNKNOWN;
	}
}
